题目分析
前面的两道题目都是找出唯一出现的一个数字,如果有两个数字都出现一次,该如何求解呢?
位运算
对于136题来说,找出唯一出现的一个数字,通过异或可以直接求出。如果有两个数字x和y都出现了一次,那么所有数字异或的结果应该就是x和y的异或结果。因为x和y不相同,所以异或的结果一定不为0,所以一定在某个位上有1出现。我们从低到高找到第一次出现1的位置。于是可以得出一个结论。一定x在该为上位1,y为0或者x为0,y为1。所以就可以将这个数组分成part1和part2,part1中所有的元素在该位上都是1,part2中所有的元素在该位上都是0。因此对于part1能通过异或的方法找出唯一出现的一个数字,part2也能通过异或的方法找出唯一出现的一个数字。
1 | import functools |
刷题总结
走过路过不要错过,赶紧尝试尝试,新鲜出炉的位运算,小伙伴们一定要掌握它。